"""
======================
Author: 柠檬班-小简
Time: 2022/10/31 19:13
Project: day9_framwork_V5
Company: 湖南零檬信息技术有限公司
======================
"""
"""
regular 

柠檬班re相关的文章：
    https://www.cnblogs.com/Simple-Small/p/9150947.html

regular表达式学习手册：
    https://tool.oschina.net/uploads/apidocs/jquery/regexp.html
    https://gitee.com/thinkyoung/learn_regex
    
re规则

1、匹配1个字符
. 除换行符以外的所有字符  \n
\d 只匹配数字0-9
\D 匹配非数字
\w 匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”， 支持中文
\W 匹配任何非单词字符。等价于“[^A-Za-z0-9_]”

[a-z]   匹配小写字母
[A-Z]   匹配大写字母
[0-9]   匹配数字

[abcd]  字符集合。匹配所包含的任意一个字符。例如，“[abc]”可以匹配“plain”中的“a”
[a|b]    匹配x或y(单。例如，“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”字符)


2、数量匹配
*  匹配前一个字符，0次或者多次
+  匹配前一个字符，1次或者多次  
? 匹配前一个字符，0次或1次

{n}   匹配前一个字符n次 {5}
{n,m}  匹配前一个字符最少是n次，最多是m次  {2,8}
{n,}   匹配前一个字符最少是n次，没有上限。 {2,}

贪婪模式： 尽可能的匹配更多更长      对人民币贪婪，越多越好。(人民币)
非贪婪模式： 尽可能的匹配更少    
          在数量表达后面加上？
          在数量表达后面加上？
          在数量表达后面加上？

边界匹配：
^    匹配输入字符串的开始位置
$    匹配输入字符串的结束位置 

匹配分组：()
"""
import re
sss = "\nsf#test#wor#cur_time#ewpfj123fslfwe43wr#random_str#3234rfd#img_path#"
s = "sf##wor#cur_time#ewpfj123fslfwe43wr#random_str#3234rfd#hello#"

# 接口框架当中，提取请求数据当中的标识符
result = re.findall("#(\w+)#",sss)
print(result)


# # ^ 匹配输入字符串的开始位置
# result = re.findall("^[a-z][a-z]#.*#",s)
# print(result)

# # 贪婪模式  #也是符合.的范围
# result = re.findall("#.*#",sss)
# print(result)

# # 非贪婪模式  在数量表达后面加上?
# result = re.findall("#.*?#",sss)
# print(result)

# # 如果没有匹配到返回的是[]
# result = re.findall("#\w+#",sss)
# print(result)

# # 把所有匹配的字符放在列表中并返回。
# result = re.findall("[abcd]hello",sss)
# print(result)

# # 把所有匹配的字符放在列表中并返回。
# result = re.findall(".",sss)
# print(result)


# # 从头开始匹配。从字符串的第一个字符开始匹配，如果第一个字符不匹配规则，那么匹配失败。
# result = re.match(".", sss)
# print(result)

# # 匹配包含。不要求从字符串的第一个字符就匹配。只要字符串当中有匹配该规则的，则就匹配成功。
# result = re.search(".", sss)
# print(result)